git 使用命令记录

  • 润物细无声
  • 2024-04-011 09:23
  • 记录一下使用的 git,免得长时间不用给搞忘了。

    git 的内容存储使用的是 SHA-1 哈希算法,它是分布式的。

    工作流

    菜鸟教程图片

    本地仓库由 git 维护的三棵“树”组成:

    基本工作流程

    1. 修改当前工作目录内容
    2. 使用 git add 指令目录 把指令目录下的修改添加到暂存区
    3. 使用 git commit -m "提交信息" 把暂存区中内容提交到本地仓库,即 HEAD
    4. 使用 git push 远方仓库链接 把 HEAD 最新内容推送到指定远方仓库

    分支

    菜鸟教程图片

    分支是用来将功能开发隔绝开来的。在你创建仓库的时候,master 是默认分支。通常的做法是在其他分支上进行开发,完成后再将它们合并到主分支 master 上。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

    一些名词

    名词 解释
    workspace 工作区
    local repository 版本库或本地仓库
    remote repository 远程仓库
    conflicts 冲突
    origin 远程仓库链接的别名,是在 clone 一个托管在服务器上代码库时,git 默认创建的指向这个远程代码库的标签,origin 指向的就是本地的代码库托管在服务器上的版本。在命令行中出现的 origin,指操作是对远程仓库操作
    master 新仓库的默认分支通常被命名为 master,但在后续版本中,Git 开始鼓励使用其他名称(如 main),以避免与种族主义相关的词汇。使用 –initial-branch 参数,你可以自定义这个初始分支的名称,比如: git init --initial-branch=main
    merge 合并
    fetch 获取
    tag 标签
    index 索引(暂存区),一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
    stage 暂存区,与 index 一个意思
    版本库 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库
    .gitignore 为 git 列出需要忽略的文件,每个子文件都可以建立该文件屏蔽一些文件
    .gitkeep 保持空文件的社区约定,详细可参考 这里

    常用的提交信息格式

    关于 commit 提交信息,每个团队都有自己的格式,比较常用的是这个:

    <type>(scope) Subject...
    
    #例如,在 arm 中添加新功能 giv3:
    <feat>(arch/arm) Add giv3 control
    

    type 取值参考如下:

    含义
    feat 添加新功能(feature)
    fix 修复 BUG(fix up)
    test 测试(test)
    doc 添加文档(documention)

    git 配置

    git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了 git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

    此外,git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 git 装在什么目录,就以此作为根目录来定位。

    $ git config --global -e
    
    $ git config --global user.name "用户名"
    $ git config --global user.email "电子邮箱"
    
    $ git config --global core.editor emacs
    
    $ git config --global merge.tool vimdiff
    
    $ git config --list
    http.postbuffer=2M
    user.name=用户名
    user.email=电子邮箱
    
    $ git config user.name
    

    请参考

    1. git 命令手册
    2. git 图形讲解
    3. github-git-cheat-sheet.pdf
    4. github 介绍

    命令记录

    gitk

    内建的图形化 git

    git init

    初始化当前目录作为 git 仓库

    git add .

    当前路径下的修改添加到暂存区

    git commit -m “提交信息”

    提交暂存区中的信息到本地仓库

    git clone 远方仓库链接

    从服务器克隆一个仓库到本地,可从 httpssh 协议克隆

    git reset

    回退

    可以任意通过该命令回到某个提交,它会将原来的 HEAD 存储在 ORIG_HEAD 中(.git/ORIG_HEAD)。

    需要注意的是,使用 --hard 在一开始就要保存好修改,在一个干净的工作目录中操作,不然之后返回将丢失修改,除非你不需要最新的修改了。因为所有的回退,都是通过从对象文件中抽取,你没有提交保存到对象文件中,再次回来将丢失。

    git remote -v

    查看已添加的所有远程仓库及其URL

    一个本地Git仓库可以添加多个远程仓库引用。每个远程仓库都有一个在本地定义的别名,通过这些别名,你可以方便地与不同的远程仓库进行交互,如拉取(pull)或推送(push)代码

    远程仓库别名 远程仓库地址
    origin 指向默认的主远程仓库(如 http://gitlab.123.com)
    backup 指向新增的备用远程仓库(如 http://gitlab.456.com)
    命令 操作
    git pull origin 分支名 从 origin 拉取更新
    git push backup 分支名 推送到 backup

    git push

    将本地仓库推送到默认远方仓库。通过 git remote add backup 远程仓库URL 方式添加远方仓库,然后通过 git push backup **分支名** 推送到远方仓库,这种方式可以将本地仓库与远方仓库联系起来。

    git fetch origin 指定分支

    将本机已经关联的远程仓库的最新变更拉取到本地仓库,只拉取不合并

    git pull

    将默认远方仓库拉取最新变更并合并本地

    git format-patch HEAD^^

    将最近的 2 个提交生成 patch,需要打包最近几个就添加几个 ^

    git am 文件名.patch

    将生成的 patch 打入代码中

    git branch 新分支名

    基于当前分支创建新分支

    git checkout 分支名

    切换到指定分支

    git merge 指定分支名

    将指定分支的修改合并到当前分支

    git checkout master
    git merge test
    

    即,切换到主分支,然后将 test 分支合并到主分支

    git diff 源分支名 目标分支名

    显示两个分支差异,即暂存区和工作区的差异。

    git tag 1.0.0 <sha1 ID>

    给指定 ID 创建名为 1.0.0 标签(或版本号)

    达到一个重要的阶段,并希望永远记住那个特别的提交快照,则可以添加标签 * git tag 查看所有标签

    git log

    查看提交记录

    © 2022-2024 留校察看 liuxocakn 保留所有权利 All Rights Reserved
    蜀ICP证2022022862号-1 川公网安备51010702003077号

    自 2024-04-23 22:54 之后访问量: 66168